package com.zhf.server;

import com.zhf.model.UserMessage;
import com.zhf.server.thread.NewClientTrhead;

import javax.swing.table.TableRowSorter;
import java.io.IOException;

/**
 * 编程实现服务器的主功能
 */
public class ServerView {
    /**
     * 使用合成复用原则
     */
    private ServerInitClose sic;
    private ServerDao sd;

    /**
     * 通过构造方法实现成员变量的初始化
     * @param sic
     */
    public ServerView(ServerInitClose sic, ServerDao sd) {
        this.sic = sic;
        this.sd = sd;
    }

    /**
     * 自定义成员方法实现客户端发来消息的接收并处理
     */
    public void serverReceive() throws IOException, ClassNotFoundException {
        boolean isLogin = false;
        while(!isLogin){
            UserMessage tum = (UserMessage) sic.getOis().readObject();
            System.out.println("接收到的消息是：" + tum);
            // 调用方法实现管理员账号和密码信息的校验
            if ("managerCheck".equals(tum.getType()) && sd.serverManagerCheck(tum.getUser())) {
                tum.setType("success");
                System.out.println("服务器发送校验结果成功！");
                isLogin = true;
            }else if("userCheck".equals(tum.getType()) && sd.serverUserCheck(tum.getUser())){
                tum.setType("success");
                System.out.println("服务器发送校验结果成功！");
                isLogin = true;
            }
            else if("exit".equals(tum.getType())){
                System.out.println("客户端即将与服务器断开连接！");
                return;
            }
            else {
                tum.setType("fail");
                System.out.println("服务器发送校验结果失败！");
                isLogin = false;
            }
            // 将校验结果发送给客户端
            sic.getOos().writeObject(tum);
        }
        if(isLogin){
            new NewClientTrhead(sic, sd).start();
        }

    }
}
